#include <gtk/gtk.h>
#include <locale.h>
#include <time.h>
#include <math.h>

static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) {
    if (event->keyval == GDK_KEY_q || event->keyval == GDK_KEY_Q) {
        gtk_main_quit();
        return TRUE;
    }
    return FALSE;
}

// Функция для рисования фигур и часов
static gboolean draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data) {

    // Рисование часов (аналогично Tkinter-коду)
    double center_x = 341; // Центр часов
    double center_y = 384; // Половина высоты окна (768/2)
    double radius = 194;   // Радиус для секундной стрелки

    // Окружности циферблата (как в Tkinter)
    cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
    cairo_set_line_width(cr, 1.0);
    cairo_arc(cr, center_x, center_y, 253, 0, 2 * G_PI); // Аналог первой окружности
    cairo_stroke(cr);
    cairo_set_line_width(cr, 3.0);
    cairo_arc(cr, center_x, center_y, 195, 0, 2 * G_PI); // Аналог второй окружности
    cairo_stroke(cr);
    cairo_set_line_width(cr, 1.0);
    cairo_arc(cr, center_x, center_y, 174, 0, 2 * G_PI); // Аналог третьей окружности
    cairo_stroke(cr);
    cairo_arc(cr, center_x, center_y, 166, 0, 2 * G_PI); // Аналог четвёртой окружности
    cairo_stroke(cr);

    // 60 маленьких кружков
    for (int i = 0; i < 60; i++) {
        double angle = -i * 6 * G_PI / 180 + G_PI / 2;
        double x = center_x + 170 * cos(angle);
        double y = center_y - 170 * sin(angle);
        cairo_arc(cr, x, y, 4, 0, 2 * G_PI);
        cairo_fill(cr);
    }

    // 12 больших кружков
    for (int i = 0; i < 12; i++) {
        double angle = -i * 30 * G_PI / 180 + G_PI / 2;
        double x = center_x + 185 * cos(angle);
        double y = center_y - 185 * sin(angle);
        cairo_set_line_width(cr, 3.0);
        cairo_arc(cr, x, y, 9, 0, 2 * G_PI);
        cairo_stroke(cr);
    }

    // 12 внешних кружков
    for (int i = 0; i < 12; i++) {
        double angle = -i * 30 * G_PI / 180 + G_PI / 2;
        double x = center_x + 225 * cos(angle);
        double y = center_y - 225 * sin(angle);
        cairo_set_line_width(cr, 1.0);
        cairo_arc(cr, x, y, 28, 0, 2 * G_PI);
        cairo_stroke(cr);
    }

// Рисование линии для 1-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
cairo_move_to(cr, 454, 160);  // Начальная точка линии
cairo_line_to(cr, 454, 191);  // Конечная точка линии
cairo_stroke(cr);

// Рисование линии для 2-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
cairo_move_to(cr, 535, 244);  // Начальная точка линии
cairo_line_to(cr, 535, 301);  // Конечная точка линии
cairo_stroke(cr);

// Рисование треугольника для 3-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_3 = 567; // Центр треугольника
double center_y_3 = 384;
double radius_3 = 28;
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_3 + radius_3 * cos(angle);
    double y1 = center_y_3 - radius_3 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_3 + radius_3 * cos(next_angle);
    double y2 = center_y_3 - radius_3 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Рисование квадрата для 4-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_4 = 537; // Центр квадрата
double center_y_4 = 496;
double radius_4 = 28;
for (int i = 0; i < 4; i++) {
    double angle = -i * 90 * G_PI / 180 + G_PI / 4; // Смещение на 45 градусов
    double x1 = center_x_4 + radius_4 * cos(angle);
    double y1 = center_y_4 - radius_4 * sin(angle);
    int next_i = (i + 1) % 4;
    double next_angle = -next_i * 90 * G_PI / 180 + G_PI / 4;
    double x2 = center_x_4 + radius_4 * cos(next_angle);
    double y2 = center_y_4 - radius_4 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Рисование пятиконечной звезды для 5-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_5 = 454; // Центр звезды
double center_y_5 = 579;
double radius_5 = 28;
for (int i = 0; i < 5; i++) {
    double angle = -i * 144 * G_PI / 180 + G_PI / 2; // Угол поворота на 144 градуса
    double x1 = center_x_5 + radius_5 * cos(angle);
    double y1 = center_y_5 - radius_5 * sin(angle);
    int next_i = (i + 1) % 5;
    double next_angle = -next_i * 144 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_5 + radius_5 * cos(next_angle);
    double y2 = center_y_5 - radius_5 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Рисование треугольника для 6-го часа (первый треугольник)
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_6 = 341; // Центр треугольника
double center_y_6 = 610;
double radius_6 = 28;
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_6 + radius_6 * cos(angle);
    double y1 = center_y_6 - radius_6 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_6 + radius_6 * cos(next_angle);
    double y2 = center_y_6 - radius_6 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Рисование второго треугольника для 6-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 6;
    double x1 = center_x_6 + radius_6 * cos(angle);
    double y1 = center_y_6 - radius_6 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 6;
    double x2 = center_x_6 + radius_6 * cos(next_angle);
    double y2 = center_y_6 - radius_6 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Дополнительные линии для 6-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
cairo_move_to(cr, 326, 609);
cairo_line_to(cr, 358, 609);
cairo_stroke(cr);
cairo_move_to(cr, 332, 595);
cairo_line_to(cr, 349, 624);
cairo_stroke(cr);
cairo_move_to(cr, 349, 595);
cairo_line_to(cr, 332, 624);
cairo_stroke(cr);

// Рисование семиконечной звезды для 7-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_7 = 218; // Центр звезды
double center_y_7 = 579;
double radius_7 = 28;
for (int i = 0; i < 7; i++) {
    double angle = -i * (360 / 7) * G_PI / 180 + G_PI / 2;
    double x1 = center_x_7 + radius_7 * cos(angle) + 10;
    double y1 = center_y_7 - radius_7 * sin(angle) - 1;
    int next_i = (i + 3) % 7; // Смещение на 3 шага для семиконечной звезды
    double next_angle = -next_i * (360 / 7) * G_PI / 180 + G_PI / 2;
    double x2 = center_x_7 + radius_7 * cos(next_angle) + 10;
    double y2 = center_y_7 - radius_7 * sin(next_angle) - 1;
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

/// --- *** 8 *** --------------------------------------
// Рисование двух квадратов для 8-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_8 = 147; // Центр для 8-го часа
double center_y_8 = 496;
double radius_8 = 28;

// Первый квадрат (0°, 90°, 180°, 270°)
for (int i = 0; i < 4; i++) {
    double angle = -i * 90 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_8 + radius_8 * cos(angle);
    double y1 = center_y_8 - radius_8 * sin(angle);
    int next_i = (i + 1) % 4;
    double next_angle = -next_i * 90 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_8 + radius_8 * cos(next_angle);
    double y2 = center_y_8 - radius_8 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Второй квадрат (45°, 135°, 225°, 315°)
for (int i = 0; i < 4; i++) {
    double angle = -i * 90 * G_PI / 180 + G_PI / 4;
    double x1 = center_x_8 + radius_8 * cos(angle);
    double y1 = center_y_8 - radius_8 * sin(angle);
    int next_i = (i + 1) % 4;
    double next_angle = -next_i * 90 * G_PI / 180 + G_PI / 4;
    double x2 = center_x_8 + radius_8 * cos(next_angle);
    double y2 = center_y_8 - radius_8 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}
/// --- *** 9 *** ---------------------------------------------
// Рисование трёх треугольников для 9-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_9 = 118; // Центр для 9-го часа
double center_y_9 = 384;
double radius_9 = 28;

// Первый треугольник (0° поворот)
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_9 + radius_9 * cos(angle);
    double y1 = center_y_9 - radius_9 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_9 + radius_9 * cos(next_angle);
    double y2 = center_y_9 - radius_9 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Второй треугольник (поворот на 40° вправо)
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 9;
    double x1 = center_x_9 + radius_9 * cos(angle);
    double y1 = center_y_9 - radius_9 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 9;
    double x2 = center_x_9 + radius_9 * cos(next_angle);
    double y2 = center_y_9 - radius_9 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Третий треугольник (поворот на 40° влево)
for (int i = 0; i < 3; i++) {
    double angle = -i * 120 * G_PI / 180 + G_PI / 2 - 2 * G_PI / 9;
    double x1 = center_x_9 + radius_9 * cos(angle);
    double y1 = center_y_9 - radius_9 * sin(angle);
    int next_i = (i + 1) % 3;
    double next_angle = -next_i * 120 * G_PI / 180 + G_PI / 2 - 2 * G_PI / 9;
    double x2 = center_x_9 + radius_9 * cos(next_angle);
    double y2 = center_y_9 - radius_9 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}
/// --- *** 10 *** -----------------------------------------------------------
// Рисование двух пятиконечных звёзд для 10-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_10 = 147; // Центр для 10-го часа
double center_y_10 = 272; // Скорректировано для позиции 10-го часа
double radius_10 = 28;

// Первая звезда (нормальная ориентация)
for (int i = 0; i < 5; i++) {
    double angle = -i * 144 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_10 + radius_10 * cos(angle);
    double y1 = center_y_10 - radius_10 * sin(angle);
    int next_i = (i + 1) % 5;
    double next_angle = -next_i * 144 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_10 + radius_10 * cos(next_angle);
    double y2 = center_y_10 - radius_10 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Вторая звезда (перевёрнутая)
for (int i = 0; i < 5; i++) {
    double angle = -i * 144 * G_PI / 180 + G_PI / 2;
    double x1 = center_x_10 + radius_10 * cos(angle);
    double y1 = center_y_10 + radius_10 * sin(angle); // Знак изменён для перевёрнутой звезды
    int next_i = (i + 1) % 5;
    double next_angle = -next_i * 144 * G_PI / 180 + G_PI / 2;
    double x2 = center_x_10 + radius_10 * cos(next_angle);
    double y2 = center_y_10 + radius_10 * sin(next_angle); // Знак изменён
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}
/// --- *** 11 *** --------------------------------------------------------------------------
// Рисование одиннадцатиконечной звезды для 11-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);
double center_x_11 = 230; // Центр для 11-го часа
double center_y_11 = 189; // Скорректировано для позиции 11-го часа
double radius_11 = 28;

for (int i = 0; i < 11; i++) {
    double angle_increment = 360.0 / 11;
    double angle = -i * angle_increment * G_PI / 180 + G_PI / 2;
    double x1 = center_x_11 + radius_11 * cos(angle);
    double y1 = center_y_11 - radius_11 * sin(angle);
    int next_i = (i + 4) % 11; // Смещение на 4 шага для 11-конечной звезды
    double next_angle = -next_i * angle_increment * G_PI / 180 + G_PI / 2;
    double x2 = center_x_11 + radius_11 * cos(next_angle);
    double y2 = center_y_11 - radius_11 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}
/// --- *** 12 *** ---------------------------------------------------------------------------
// Рисование 12-го часа
cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
cairo_set_line_width(cr, 1.0);

// Снежинка
cairo_move_to(cr, 326, 159); // 327, 98
cairo_line_to(cr, 359, 159); // 360, 98
cairo_stroke(cr);
cairo_move_to(cr, 333, 145); // 334, 84
cairo_line_to(cr, 350, 174); // 351, 113
cairo_stroke(cr);
cairo_move_to(cr, 350, 145); // 351, 84
cairo_line_to(cr, 333, 173); // 334, 112
cairo_stroke(cr);

// 12-угольник
double center_x_12 = 341; // Центр для 12-го часа (смещён относительно Python)
double center_y_12 = 159; // Скорректировано: 98 + (384 - 323)
double radius_12 = 28;
for (int i = 0; i < 12; i++) {
    double angle = -i * 30 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 24; // Поворот на 15° (1/24 окружности)
    double x1 = center_x_12 + radius_12 * cos(angle);
    double y1 = center_y_12 - radius_12 * sin(angle);
    int next_i = (i + 1) % 12;
    double next_angle = -next_i * 30 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 24;
    double x2 = center_x_12 + radius_12 * cos(next_angle);
    double y2 = center_y_12 - radius_12 * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}

// Первая группа линий
cairo_move_to(cr, 334, 132); // 335, 71 + (384 - 323)
cairo_line_to(cr, 334, 147); // 335, 86 + (384 - 323)
cairo_stroke(cr);
cairo_move_to(cr, 349, 132); // 350, 71
cairo_line_to(cr, 349, 147); // 350, 86
cairo_stroke(cr);
cairo_move_to(cr, 363, 139); // 364, 78
cairo_line_to(cr, 349, 147); // 350, 86
cairo_stroke(cr);
cairo_move_to(cr, 367, 152); // 368, 91
cairo_line_to(cr, 355, 159); // 356, 98
cairo_stroke(cr);
cairo_move_to(cr, 320, 139); // 321, 78
cairo_line_to(cr, 334, 147); // 335, 86
cairo_stroke(cr);
cairo_move_to(cr, 316, 152); // 317, 91
cairo_line_to(cr, 327, 159); // 328, 98
cairo_stroke(cr);
cairo_move_to(cr, 349, 170); // 350, 109
cairo_line_to(cr, 349, 187); // 350, 126
cairo_stroke(cr);
cairo_move_to(cr, 334, 170); // 335, 109
cairo_line_to(cr, 334, 187); // 335, 126
cairo_stroke(cr);
cairo_move_to(cr, 327, 160); // 328, 99
cairo_line_to(cr, 313, 167); // 314, 106
cairo_stroke(cr);
cairo_move_to(cr, 333, 172); // 334, 111
cairo_line_to(cr, 318, 179); // 319, 118
cairo_stroke(cr);
cairo_move_to(cr, 353, 159); // 354, 98
cairo_line_to(cr, 370, 167); // 371, 106
cairo_stroke(cr);
cairo_move_to(cr, 350, 171); // 351, 110
cairo_line_to(cr, 364, 180); // 365, 119
cairo_stroke(cr);


// Шестиконечная звезда
double radius_star = 16;
for (int i = 0; i < 6; i++) {
    double angle = -i * 60 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 12; // Поворот на 30° (1/12 окружности)
    double x1 = center_x_12 + radius_star * cos(angle);
    double y1 = center_y_12 - radius_star * sin(angle);
    int next_i = (i + 1) % 6;
    double next_angle = -next_i * 60 * G_PI / 180 + G_PI / 2 + 2 * G_PI / 12;
    double x2 = center_x_12 + radius_star * cos(next_angle);
    double y2 = center_y_12 - radius_star * sin(next_angle);
    cairo_move_to(cr, x1, y1);
    cairo_line_to(cr, x2, y2);
    cairo_stroke(cr);
}
/// --- *** 12 конец *** ---------------------------------------------------------------------------
///------------------------------------------------------------------------------------------
    // Получение текущего времени
    time_t rawtime;
    struct tm *timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    int time_sec = timeinfo->tm_sec;
    int time_min = timeinfo->tm_min;
    int time_hour = timeinfo->tm_hour % 12; // 12-часовой формат

    // Углы стрелок
    double sec_angle = 6 * time_sec;
    double min_angle = 6 * (time_min + (1.0 / 60) * time_sec);
    double hour_angle = 30 * (time_hour + (1.0 / 60) * time_min);

    // Секундная стрелка
    cairo_set_source_rgb(cr, 0.68, 0.93, 0.93); // LightCyan
    cairo_set_line_width(cr, 2.0);
    double x_end_sec = center_x - radius * cos(sec_angle * G_PI / 180 + G_PI / 2);
    double y_end_sec = center_y - radius * sin(sec_angle * G_PI / 180 + G_PI / 2);
    cairo_move_to(cr, center_x, center_y);
    cairo_line_to(cr, x_end_sec, y_end_sec);
    cairo_stroke(cr);

    // Минутная стрелка
    cairo_set_line_width(cr, 3.0);
    double minute_hand_length = 173;
    double x_end_min = center_x - minute_hand_length * cos(min_angle * G_PI / 180 + G_PI / 2);
    double y_end_min = center_y - minute_hand_length * sin(min_angle * G_PI / 180 + G_PI / 2);
    cairo_move_to(cr, center_x, center_y);
    cairo_line_to(cr, x_end_min, y_end_min);
    cairo_stroke(cr);

    // Часовая стрелка
    cairo_set_line_width(cr, 5.0);
    double hour_hand_length = 167;
    double x_end_hour = center_x - hour_hand_length * cos(hour_angle * G_PI / 180 + G_PI / 2);
    double y_end_hour = center_y - hour_hand_length * sin(hour_angle * G_PI / 180 + G_PI / 2);
    cairo_move_to(cr, center_x, center_y);
    cairo_line_to(cr, x_end_hour, y_end_hour);
    cairo_stroke(cr);

    return FALSE;
}

// Функция обновления часов
static gboolean update_clock(gpointer data) {
    GtkWidget *drawing_area = GTK_WIDGET(data);
    gtk_widget_queue_draw(drawing_area); // Перерисовка области
    return TRUE; // Продолжать вызов
}

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    if (!setlocale(LC_ALL, "")) {
        printf("Ошибка установки локали\n");
        return 1;
    }

    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "acpi - Desktop Version");
    gtk_window_set_default_size(GTK_WINDOW(window), 670, 716); // Размер как в Tkinter
    gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG);

    // Контейнер и фон
    GtkWidget *overlay = gtk_overlay_new();
    gtk_container_add(GTK_CONTAINER(window), overlay);

    GtkWidget *background = gtk_image_new_from_file("grnWatch.jpg");
    gtk_overlay_add_overlay(GTK_OVERLAY(overlay), background);
    gtk_widget_set_halign(background, GTK_ALIGN_FILL);
    gtk_widget_set_valign(background, GTK_ALIGN_FILL);

    // Область рисования
    GtkWidget *drawing_area = gtk_drawing_area_new();
    gtk_widget_set_size_request(drawing_area, 683, 768); // Полный размер окна
    gtk_overlay_add_overlay(GTK_OVERLAY(overlay), drawing_area);
    gtk_widget_set_halign(drawing_area, GTK_ALIGN_CENTER);
    gtk_widget_set_valign(drawing_area, GTK_ALIGN_CENTER);

    // Подключаем функцию рисования и обновления
    g_signal_connect(drawing_area, "draw", G_CALLBACK(draw_callback), NULL);
    g_timeout_add(1000, update_clock, drawing_area); // Обновление каждую секунду

    // CSS для прозрачности фона виджета
    GtkCssProvider *provider = gtk_css_provider_new();
    gtk_css_provider_load_from_data(provider,
        "drawing-area {"
        "   background-color: transparent;"
        "}",
        -1, NULL);
    gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
        GTK_STYLE_PROVIDER(provider),
        GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    g_object_unref(provider);

    // Сигналы
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(window, "key-press-event", G_CALLBACK(on_key_press), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

// gcc window.c -o window `pkg-config --cflags --libs gtk+-3.0` -lm
